from tools.class_excel import Reader, Writer
from keywords.web_keys import Web


# 读取excel中的所有测试数据
reader = Reader()
reader.open_excel('./lib/cases.xlsx')
writer = Writer()
writer.open_excel('./lib/cases.xlsx')

# 读取数据
datas = reader.read_data_to_list()  #  [[第一行数据], [第二行数据], [第三行数据]...]
# 创建关键字类对象
web = Web(writer)

def runcase(obj, line):
    """
    反射获取函数对象, 并传入实参, 调用关键字函数
    :param obj: 关键字类对象
    :param line: 行数据
    """
    if len(line[0]) > 0 or len(line[1]) > 0:
        return
    try:
        func = getattr(obj, line[3])
    except Exception:
        print(f'关键字: {line[3]}不存在, 请确认!')
        return
    args = line[4:]
    args = args[:args.index('')]  # args: [id=username, 13800138006]
    func(*args)  # input(id=username, 13800138006)

for i in range(len(datas)):
    web.row = i + 1  # 读取数据的下标 + 1  == excel数据文件的行号
    # 调用runcase函数, 反射执行数据驱动的关键字函数
    runcase(web, datas[i])

# 执行所有关键字函数后, 统一保存写入数据
writer.save('./lib/cases-result.xlsx')













